/**
 * @(#) KeywordExtractor.java  
 * May 22, 2007
 * 
 * Copyright (c) 2007 Cal Poly State University San Luis Obispo
 */
package edu.calpoly.csc.coursebook.util;

import java.util.Collection;
import java.util.HashMap;
import java.util.List;

/**
 * The Interface KeywordExtractor.
 * 
 * @version
 * @author misc
 * @author Khang Duong
 */
public interface KeywordExtractor
{
   /**
    * Extract keywords from a given input string. The format of the input 
    * string is unknown. Assume that the language is english, but there is no 
    * guaranteed structure of the input.
    *  
    * @param input a string of words/prose/etc...
    * @return a list of relavent keywords extracted from the input
    */
   public HashMap<String, Double> extractKeywords(String input);
   
   /**
    * Extract invalid words from a given input string.  Same invariants as the
    * method <code>extractKeywords()</code>  
    * 
    * @param input
    * @return
    */
   public String[] checkValidWords(String[] input);
   
   /**
    * Return the original list of interest keywords without the stop list words
    * and only nouns, verbs, and adjectives.
    * 
    * @return a List<String> of the original interest keywords
    */
   public List<String> getOriginalInterestKeywords();
   
   /**
	 * Gets the interest to synonym map.
	 * 
	 * @return the interest to synonym map
	 */
   public HashMap<String, String> getInterestToSynonymMap();
}
